home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).zip / Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).do / PRO.V.bas < prev    next >
BASIC Source File  |  1996-12-24  |  12KB  |  324 lines

  1. 10  GOSUB 9000
  2. 20  GOSUB 4000
  3. 30  GOSUB 5000
  4. 40  GOSUB 6000
  5. 50  GOSUB 7000
  6. 60  GOSUB 8000
  7. 70  GOSUB 8200
  8. 80  POKE 54,189: POKE 55,158
  9. 90  PRINT  CHR$(4);"RUN PRO.VI"
  10. 4000  REM <CTRL-J><CTRL-J>EXPLANATION<CTRL-J>
  11. 4010  HGR2 
  12. 4020 A$ = "@SOME THINGS YOU SHOULD HAVE NOTICED IN THIS EXAMPLE ARE:": GOSUB 10000
  13. 4030 VT = VT +1
  14. 4040 A$ = "1.  @THE BALL TOOK THE SAME TIME TO GO UP AS IT DID TO GO DOWN.": GOSUB 10000
  15. 4050 A$ = "2.  @THE VELOCITY CHANGED FROM POSITIVE TO NEGATIVE AT THE HIGHEST POINT (IT WAS ACTUALLY ZERO AT THIS POINT)."
  16. 4060  GOSUB 10000:VT = VT +1
  17. 4070 A$ = "@NOW LET'S USE THESE TWO FACTS TO COMPUTE THE ANSWER TO A VERY SIMPLE PROBLEM.": GOSUB 10000
  18. 4080  GOSUB 15000
  19. 4090 V0 = ( INT( RND(8) *10) +1) *10
  20. 4100 CENTER = 1
  21. 4110 A$ = "@PROBLEM 1": GOSUB 10000
  22. 4120 CENTER = 0
  23. 4130 A$ = "@A TENNIS BALL IS THROWN DIRECTLY UPWARDS WITH AN INITIAL VELOCITY OF " + STR$(V0) +" M/SEC.  @HOW HIGH (IN METERS) WILL IT GET BEFORE IT BEGINS TO FALL BACK TOWARDS THE @EARTH?": GOSUB 10000
  24. 4140 VT = VT +1
  25. 4150 A$ = "@ENTER YOUR ANSWER OR '@H' IF YOU NEED HELP.": GOSUB 10000
  26. 4160  GOSUB 17000
  27. 4170  IF  LEFT$(G$,1) < >"H"  THEN 4310
  28. 4180  HGR2 :VT = 1
  29. 4190 A$ = "@TO COMPUTE THE ANSWER TO THIS PROBLEM, FIRST USE THE FACT THAT THE VELOCITY IS ZERO AT THE HIGHEST POINT.": GOSUB 10000
  30. 4200 A$ = "@USE THE EQUATION: V=GT+VO AND SOLVE FOR T.": GOSUB 10000
  31. 4210 A$ = "@THIS IS THE TIME AT WHICH THE BALL REACHES ITS HIGHEST POINT.": GOSUB 10000
  32. 4220 A$ = "@NOW SUBSTITUTE INTO THE EQUATION:": GOSUB 10000
  33. 4230 CENTER = 1
  34. 4240 A$ = "S=1/2 GT  + V T": GOSUB 10000
  35. 4250 VT = VT -3
  36. 4260 A$ = "        2      ": GOSUB 10000
  37. 4270 A$ = "             O ": GOSUB 10000
  38. 4280 CENTER = 0
  39. 4290 A$ = "@HOW HIGH (IN METERS) DOES THE BALL GET WITH AN INITIAL VELOCITY OF " + STR$(V0) +" M/SEC?": GOSUB 10000
  40. 4300  GOSUB 17000
  41. 4310  HGR2 :VT = 1
  42. 4320 AN =  VAL(G$)
  43. 4330 V = 0
  44. 4340 T = (V -V0)/G
  45. 4350 S = 1/2 *G *T *T +V0 *T
  46. 4360 S =  INT(S *10 +.5)/10
  47. 4370  IF  ABS(S -AN) <.6  THEN 4410
  48. 4380 A$ = "@SORRY, THAT'S NOT CORRECT.": GOSUB 10000
  49. 4390 A$ = "@THE CORRECT ANSWER IS " + STR$(S) +" METERS.": GOSUB 10000
  50. 4400  GOTO 4420
  51. 4410 A$ = "@THAT IS CORRECT!!": GOSUB 10000
  52. 4420  GOSUB 15000
  53. 4430  RETURN 
  54. 5000  REM <CTRL-J><CTRL-J>HORIZONTAL COMPONENT<CTRL-J>
  55. 5010 A$ = "@NOW LET'S EXAMINE THE HORIZONTAL COMPONENT OF PROJECTILE MOTION.": GOSUB 10000
  56. 5020 CENTER = 1:VT = VT +1
  57. 5030 A$ = "PROBLEM 2": GOSUB 10000
  58. 5040 CENTER = 0
  59. 5050 A$ = "@A SPACESHIP IS TRAVELLING AT 1000 M/SEC IN A FRICTIONLESS ENVIRONMENT.  @AT WHAT TIME WILL IT STOP?": GOSUB 10000
  60. 5060  GOSUB 17000
  61. 5070  IF G$ < >"H"  THEN 5100
  62. 5080 A$ = "@NO HINTS ON THIS PROBLEM!": GOSUB 10000
  63. 5090  GOSUB 17000
  64. 5100  HGR2 :VT = 1
  65. 5110  IF  LEFT$(G$,8) = "IT WON'T"  THEN 5190
  66. 5120  IF  LEFT$(G$,11) = "IT WILL NOT"  THEN 5190
  67. 5130  IF  LEFT$(G$,13) = "IT WILL NEVER"  THEN 5190
  68. 5140  IF  LEFT$(G$,5) = "NEVER"  THEN 5190
  69. 5150  IF  LEFT$(G$,10) = "AT NO TIME"  THEN 5190
  70. 5160  IF  ASC(G$) >47  AND  ASC(G$) <58  THEN 5210
  71. 5170 A$ = "@I CAN'T FIGURE OUT WHAT YOUR ANSWER IS, BUT THE CORRECT ANSWER IS THAT IT WILL NEVER STOP!": GOSUB 10000
  72. 5180  GOTO 5230
  73. 5190 A$ = "@THAT'S CORRECT!": GOSUB 10000
  74. 5200  GOTO 5230
  75. 5210 A$ = "@THAT'S NOT CORRECT.  @THE SPACESHIP WILL NEVER STOP.": GOSUB 10000
  76. 5220  GOTO 5230
  77. 5230 VT = VT +1
  78. 5240 A$ = "@THIS IS WHY YOU WILL HAVE TO FIND THE TIME THAT A PARTICLE STOPS BY USING THE VERTICAL COMPONENT, AND THEN USING THAT TIME IN THE HORIZONTAL COMPONENT FORMULA.": GOSUB 10000
  79. 5250  GOSUB 15000
  80. 5260  RETURN 
  81. 6000  REM <CTRL-J><CTRL-J>HORIZONTAL PROBLEM<CTRL-J>
  82. 6010 A$ = "@HERE IS A BRIEF DEMONSTRATION PROBLEM TO ILLUSTRATE HOW TO SOLVE PROJECTILE MOTION PROBLEMS.....": GOSUB 10000
  83. 6020 VT = VT +1
  84. 6030 A$ = "@A BALL IS FIRED FROM A CANNON WITH AN INITIAL VELOCITY OF 30 M/SEC AND AN ANGLE OF INCLINATION OF 45" + CHR$(2) +".  @HOW HIGH WILL THE BALL GET, AND HOW FAR AWAY WILL IT LAND.": GOSUB 10000
  85. 6040  GOSUB 15000
  86. 6050 A$ = "@FIRST, WE HAVE TO FIGURE OUT THE HORIZONTAL AND VERTICAL COMPONENTS FROM THE GIVEN DATA.  @THE FORMULAS THAT HAVE TO BE USED TO DO THIS ARE:": GOSUB 10000
  87. 6060 CENTER = 1
  88. 6070 A$ = "V  = V @C@O@S @A": GOSUB 10000
  89. 6080 VT = VT -1
  90. 6090 A$ = " H    O     ": GOSUB 10000
  91. 6100 A$ = "V  = V @S@I@N @A": GOSUB 10000
  92. 6110 VT = VT -1
  93. 6120 A$ = " V    O     ": GOSUB 10000
  94. 6130 CENTER = 0
  95. 6140 A$ = "@WHEN WE PUT THE GIVEN INFORMATION INTO THESE FORMULAS, WE GET...": GOSUB 10000
  96. 6150 V0 = 30:TH = 45
  97. 6160 AN = TH *3.141592653/180
  98. 6170 VH = V0 * COS(AN)
  99. 6180 VV = V0 * SIN(AN)
  100. 6190 VH =  INT(VH *10 +.5)/10
  101. 6200 VV =  INT(VV *10 +.5)/10
  102. 6210 CENTER = 1
  103. 6220 A$ = "V  = " + STR$(V0) +" X @C@O@S " + STR$(TH) + CHR$(2) +" = " + STR$(VH): GOSUB 10000
  104. 6230 VT = VT -1
  105. 6240 A$ = " H" + LEFT$("                         ", LEN(A$) -5): GOSUB 10000
  106. 6250 A$ = "V  = " + STR$(V0) +" X @S@I@N " + STR$(TH) + CHR$(2) +" = " + STR$(VV): GOSUB 10000
  107. 6260 VT = VT -1
  108. 6270 A$ = " V" + LEFT$("                         ", LEN(A$) -5): GOSUB 10000
  109. 6280 CENTER = 0
  110. 6290  GOSUB 15000
  111. 6300 A$ = "@TO FIND HOW HIGH THE BALL WILL RISE, WE USE THE FACT THAT THE VELOCITY IS ZERO AT THE HIGHEST POINT, AND THE EQUATION:": GOSUB 10000
  112. 6310 CENTER = 1
  113. 6320 A$ = "V = GT + V ": GOSUB 10000
  114. 6330 VT = VT -1
  115. 6340 A$ = "          O": GOSUB 10000
  116. 6350 T = (0 -VV)/G
  117. 6360 T =  INT(T *10 +.5)/10
  118. 6370 CENTER = 0
  119. 6380 A$ = "@WHEN YOU INSERT THE DATA INTO THE EQUATION AND SOLVE FOR 'T', YOU GET:": GOSUB 10000
  120. 6390 CENTER = 1
  121. 6400 A$ = "T = " + STR$(T): GOSUB 10000:CENTER = 0
  122. 6410 CENTER = 0
  123. 6420 A$ = "@THIS MEANS THAT AT " + STR$(T) +" SECONDS, THE BALL IS AT ITS HIGHEST POINT.": GOSUB 10000
  124. 6430  GOSUB 15000
  125. 6440 A$ = "@WE NOW INSERT THIS INTO THE EQUATION:": GOSUB 10000
  126. 6450 CENTER = 1
  127. 6460 A$ = "S = 1/2 GT  + V T": GOSUB 10000
  128. 6470 VT = VT -3
  129. 6480 A$ = "          2      ": GOSUB 10000
  130. 6490 A$ = "               V ": GOSUB 10000
  131. 6500 CENTER = 0
  132. 6510 S = 1/2 *G *T *T +VV *T
  133. 6520 S =  INT(S *10 +.5)/10
  134. 6530 A$ = "AND WE GET HEIGHT = " + STR$(S): GOSUB 10000
  135. 6540 A$ = "@THIS IS THE ANSWER TO THE FIRST PART.": GOSUB 10000
  136. 6550 VT = VT +1
  137. 6560 A$ = "@THE SECOND PART IS EASY NOW.  @SINCE IT TAKES " + STR$(T) +" SECONDS TO GO UP, IT MUST ALSO TAKE " + STR$(T) +" SECONDS TO GO DOWN, SO IT WILL HIT THE GROUND AT " + STR$(T *2) +" SECONDS.": GOSUB 10000
  138. 6570  GOSUB 15000
  139. 6580  RETURN 
  140. 7000  REM <CTRL-J><CTRL-J>SECOND PART OF PROBLEM<CTRL-J>
  141. 7010 T = T *2
  142. 7020 A$ = "@USING THE EQUATION:": GOSUB 10000
  143. 7030 CENTER = 1
  144. 7040 A$ = "S = V T": GOSUB 10000
  145. 7050 VT = VT -1
  146. 7060 A$ = "     H ": GOSUB 10000
  147. 7070 CENTER = 0
  148. 7080 S = VH *T
  149. 7090 A$ = "WE FIND THAT AT " + STR$(T) +" SECONDS, THE BALL HAS TRAVELLED " + STR$(S) +" METERS.  @THIS IS THE ANSWER TO THE SECOND PART.": GOSUB 10000
  150. 7100 VT = VT +1
  151. 7110 A$ = "@HERE IS A DEMONSTRATION OF THIS MOTION.  @NOTICE HOW IT CONFORMS TO OUR INFORMATION.": GOSUB 10000
  152. 7120  GOSUB 15000
  153. 7130  RETURN 
  154. 8000  REM <CTRL-J><CTRL-J>SET UP GRID<CTRL-J>
  155. 8010  HCOLOR= 3
  156. 8020  HPLOT 5,0 TO 5,183 TO 279,183
  157. 8030  FOR X = 0 TO 91
  158. 8040 Y1 = 187
  159. 8050  IF X/5 =  INT(X/5)  THEN Y1 = 189
  160. 8060  IF X/10 =  INT(X/10)  THEN Y1 = 191
  161. 8070  HPLOT X *3 +5,183 TO X *3 +5,Y1
  162. 8080  NEXT X
  163. 8090  FOR Y = 0 TO 60
  164. 8100 X1 = 2
  165. 8110  IF Y/5 =  INT(Y/5)  THEN X1 = 1
  166. 8120  IF Y/10 =  INT(Y/10)  THEN X1 = 0
  167. 8130  HPLOT 5,183 -Y *3 TO X1,183 -Y *3
  168. 8140  NEXT Y
  169. 8150  RETURN 
  170. 8200  REM <CTRL-J><CTRL-J>CONTROL THROWING OF BALL<CTRL-J>
  171. 8210 TR = 0: GOSUB 8500
  172. 8220 T = (0 -VV)/G:T =  INT(T *10 +.5)/10
  173. 8230 S = 1/2 *G *T *T +VV *T
  174. 8240 Y = 183 -S *3
  175. 8250  HCOLOR= 3
  176. 8260  FOR X = 5 TO 265  STEP 10
  177. 8270  HPLOT X,Y TO X +5,Y
  178. 8280  NEXT X
  179. 8290 D = T *VH:D =  INT(D *10 +.5)/10
  180. 8300 X = 5 +D *3
  181. 8310  FOR Y = 183 TO 20  STEP  -10
  182. 8320  HPLOT X,Y TO X,Y -5
  183. 8330  NEXT Y
  184. 8340 TR = 0: GOSUB 8500
  185. 8350 TR = 1: GOSUB 8500
  186. 8360  RETURN 
  187. 8500  REM <CTRL-J><CTRL-J>THROW BALL<CTRL-J>
  188. 8510 T = 0:X1 = 0:Y1 = 0
  189. 8520  HCOLOR= 3
  190. 8530  HPLOT 5,183
  191. 8540 V0 = 30
  192. 8550 AN = 45
  193. 8560 AN = AN *3.141592653/180
  194. 8570 VH = V0 * COS(AN):VV = V0 * COS(AN)
  195. 8580 VH =  INT(VH *10 +.5)/10:VV =  INT(VV *10 +.5)/10
  196. 8590 T = T +.05
  197. 8600 H = 1/2 *G *T *T +VV *T
  198. 8610 D = VH *T
  199. 8620 X = 3 *D +5
  200. 8630 Y = 183 -H *3
  201. 8640  IF TR = 1  THEN 8720
  202. 8650  HCOLOR= 0
  203. 8660  HPLOT X1,Y1
  204. 8670  IF H < = 0  THEN 8760
  205. 8680  HCOLOR= 3
  206. 8690  HPLOT X,Y
  207. 8700  GOTO 8740
  208. 8710  IF H < = 0  THEN 8760
  209. 8720  IF H < = 0  THEN 8760
  210. 8730  HPLOT  TO X,Y
  211. 8740 X1 = X:Y1 = Y
  212. 8750  GOTO 8590
  213. 8760  RETURN 
  214. 9000  REM <CTRL-J><CTRL-J>INITIALIZE<CTRL-J>
  215. 9010  HIMEM: 16384
  216. 9020  IF  PEEK(24576) = 72  THEN 9050
  217. 9030  PRINT  CHR$(4);"BLOAD HIRES CHAR"
  218. 9040  PRINT  CHR$(4) +"BLOAD CHAR TABLE"
  219. 9050 VT = 1:SOUND = 0:CENTER = 0:WIDTH = 40
  220. 9060 G =  -9.8
  221. 9070  HOME 
  222. 9080  RETURN 
  223. 10000  REM <CTRL-J><CTRL-J>LOWER CASE PRINTER<CTRL-J>
  224. 10010  POKE 54,0: POKE 55,96
  225. 10020 L =  LEN(A$)
  226. 10030  VTAB VT
  227. 10040  IF CENTER = 0  THEN 10120
  228. 10050 I = 0
  229. 10060  FOR K = 1 TO L
  230. 10070 I = I +1
  231. 10080  IF  MID$ (A$,K,1) = "&"  OR  MID$ (A$,K,1) = "@"  THEN I = I -1
  232. 10090  NEXT K
  233. 10100  HTAB (40 -I)/2
  234. 10110  GOTO 10130
  235. 10120  HTAB 1
  236. 10130 SPACES = 0
  237. 10140  FOR CURRENT = 1 TO L
  238. 10150  FOR K = CURRENT TO L
  239. 10160  IF  MID$ (A$,K,1) < >" "  THEN  NEXT K
  240. 10170 WRD$ =  MID$ (A$,CURRENT,K -CURRENT)
  241. 10180 CURRENT = K
  242. 10190 LW =  LEN(WRD$):NL = LW
  243. 10200  IF LW = 0  THEN SPACES = SPACES +1: GOTO 10460
  244. 10210  FOR K = 1 TO  LEN(WRD$)
  245. 10220  IF  MID$ (WRD$,K,1) = "@"  THEN NL = NL -1
  246. 10230  NEXT K
  247. 10240  IF SPACES +NL < = WIDTH  THEN 10280
  248. 10250 VT = VT +2
  249. 10260  HTAB 1
  250. 10270 SPACE = 0
  251. 10280 SPACES = SPACES +NL +1
  252. 10290  VTAB VT
  253. 10300  FOR J = 1 TO LW
  254. 10310 LL = 32
  255. 10320 L$ =  MID$ (WRD$,J,1)
  256. 10330  IF L$ = "@"  OR L$ = "&"  THEN J = J +1:LL = 0 -64 *(L$ = "&"): GOTO 10320
  257. 10340 I =  ASC(L$)
  258. 10350  IF I <65  OR I >90  THEN LL = 0
  259. 10360  PRINT  CHR$(I +LL);
  260. 10370  IF   NOT SOUND  THEN 10450
  261. 10380  IF L$ = " "  THEN 10450
  262. 10390  FOR X = 1 TO 2
  263. 10400 S =  PEEK( -16336)
  264. 10410  NEXT X
  265. 10420  IF L$ < >" "  AND L$ < >"."  AND L$ < >","  THEN 10450
  266. 10430 FINISH = 20 +150 *(L$ = "            .") +75 *(L$ = ",")
  267. 10440  FOR X = 1 TO FINISH: NEXT X
  268. 10450  NEXT J
  269. 10460  PRINT " ";
  270. 10470  NEXT CURRENT
  271. 10480 VT = VT +2
  272. 10490  RETURN 
  273. 15000  REM <CTRL-J><CTRL-J>PRESS ANY KEY<CTRL-J>
  274. 15010  POKE  -16368,0
  275. 15020 CU$ = "!/-\":VT = 24
  276. 15030 A$ = "! PRESS ANY KEY": GOSUB 10000
  277. 15040 VT = VT -2:C = 1:L = 4
  278. 15050  VTAB VT: HTAB 1: PRINT  MID$ (CU$,C,1)
  279. 15060 KEY =  PEEK( -16384): IF KEY <128  THEN C = C +1 -L *(C = L): GOTO 15050
  280. 15070  HGR2 :VT = 1: RETURN 
  281. 17000  REM <CTRL-J><CTRL-J>HIRES INPUT<CTRL-J>
  282. 17005  POKE  -16368,0
  283. 17010  HTAB 1: VTAB VT
  284. 17020  PRINT "===>"
  285. 17030 G$ = ""
  286. 17040 A =  PEEK( -16384)
  287. 17050  IF A <127  THEN 17040
  288. 17060  POKE  -16368,0
  289. 17070  IF A = 141  THEN 17320
  290. 17080  IF A < >136  THEN 17250
  291. 17085  IF   NOT SOUND  THEN 17120
  292. 17090  FOR X = 1 TO 20  STEP 5
  293. 17100  POKE 6,X: POKE 7,2: CALL 768
  294. 17110  NEXT 
  295. 17120 L =  LEN(G$)
  296. 17130  IF L >1  THEN 17210
  297. 17135  IF L = 1  THEN 17180
  298. 17136  IF   NOT SOUND  THEN 17180
  299. 17140  FOR Y = 1 TO 10
  300. 17150  FOR X = 1 TO 25  STEP 6
  301. 17160  POKE 6,X: POKE 7,3: CALL 768
  302. 17170  NEXT : NEXT 
  303. 17180  VTAB VT: HTAB 5: PRINT "     "
  304. 17190 G$ = ""
  305. 17200  GOTO 17040
  306. 17210 L = L -1
  307. 17220 G$ =  LEFT$(G$,L)
  308. 17230  VTAB VT: HTAB L +5: PRINT " "
  309. 17240  GOTO 17040
  310. 17250 G$ = G$ + CHR$(A -128)
  311. 17260 L =  LEN(G$)
  312. 17270  VTAB VT: HTAB L +4: PRINT  CHR$(A)
  313. 17275  IF   NOT SOUND  THEN 17310
  314. 17280  FOR X = 20 TO 1  STEP  -2
  315. 17290  POKE 6,X: POKE 7,2: CALL 768
  316. 17300  NEXT X
  317. 17310  GOTO 17040
  318. 17320  IF   NOT SOUND  THEN 17370
  319. 17325  FOR Y = 1 TO 3
  320. 17330  FOR X = 40 TO 1  STEP  -4
  321. 17340  POKE 6,X: POKE 7,2: CALL 768
  322. 17350  NEXT X: NEXT Y
  323. 17360 VT = VT +2
  324. 17370  RETURN